home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Cream of the Crop 26
/
Cream of the Crop 26.iso
/
os2
/
flstd200.zip
/
FASTLST.DOC
< prev
next >
Wrap
Text File
|
1997-06-19
|
122KB
|
3,269 lines
**************************************************************
* *
* *
* ******* ** **** ****** **** **** ****** *
* ** * **** ** ** * ** * ** ** ** * ** * *
* ** * ** ** ** ** ** ** ** *
* **** ** ** **** ** ** **** ** *
* ** * ****** ** ** ** * ** ** *
* ** ** ** ** ** ** ** ** ** ** ** *
* **** ** ** **** **** ******* **** **** *
* *
* *
* Version 2.00 *
* *
* The ultimate V7+ nodelist processor *
* *
* *
**************************************************************
* *
* (C) Copyright 1992-1997 by Alberto Pasquale *
* *
* A L L R I G H T S R E S E R V E D *
* *
**************************************************************
FastLst 2.00 User's Manual, by Alberto Pasquale
INTRODUCTION
-> For licensing information, please see License.Doc.
Thanks for evaluating FastLst: the ultimate "Version 7+"
nodelist processor.
Version 7 is a common format for binary nodelists to be used by
mailers, message editors and all the programs that need fast
access to a compiled nodelist.
Version 7+ is fully compatible with V7 and adds lots of new
powerful features for V7+ aware applications.
Main Features
- Compiles to Version 7+ format nodelist.
- Support for Version 7.
- Support for old "Fidouser.Lst" sysop list.
- Multiple output nodelist (NODEX.*) compilation from one config
file.
- The complete maintenance of archived lists and diffs is
achieved through internal flexible configuration, with no need
for clumsy batch files.
- Uses "Squish Style" Compress.Cfg.
- Can be invoked from a batch file at predefined events: the
compilation will take place only if some new list/diff is
found.
- Multitasking friendly
- The OS/2 version allows for priority setting in the
configuration file.
- Compilation reports can be posted to Fido or Squish format
message areas.
- Full 4D (point) support, both via the "Point,..." and
"Boss,..." keywords.
- Internal support for "German type" pointlists.
- Easy addition of nodes via the "Node,<address>,..." keyword
in a private list.
- Easy specification of phone strings to be taken "verbatim"
for internet addresses and script names.
- In the case of SysOps of multiple nodes, keeps all the
name/address entries in the sysop index.
- User Cost (Msg Fee) can be set different from Call Cost.
CREDITS
This program uses the Squish "MsgAPI" code, Copyright 1991-1994
by Lanius Corporation. "Squish" and "Maximus" are trademarks of
Lanius Corporation.
"BinkleyTerm" is a trademark of Bit Bucket Software Co.
"4OS2" is a trademark of JP Software Inc.
The archivers referred-to throughout this documentation are
Copyright and/or trademarks of the respective owners.
"VMODEM" and "SIO" are Copyright by Raymond L. Gwinn.
"U.S. Robotics" and "I-modem" are registered trademarks of U.S.
Robotics Access Corporation.
OVERALL OPERATION
FastLst has been designed to be invoked regularly from one of
your main batch files, after mail has been received or at
pre-arranged times at your pleasure: if any new (compressed or
not) nodelist/nodediff is detected, Fastlst processes them as
required (exiting with Errorlevel 0), otherwise it immediately
exits (errorlevel 100) with no further delay.
When FastLst detects a changed config or password file, it
compiles all the affected nodelists even if they are not new.
If you want FastLst to compile all of your nodelists even if no
new ones are present, you need to use the -f or -i command line
switch.
For each "output block" in the config file:
- New compressed lists or diffs are detected, unarchived and
optionally rearchived in supplementary formats.
- New diffs are detected and applied: the resulting new nodelist
is archived. Before applying a diff, the day number and CRC of
the old nodelist are compared against the ones requested by
the diff; after application, the CRC of the new nodelist is
checked.
- New lists are detected and the pertinent output nodelists are
rebuilt. If no new list is found for a specific "output
block", that output nodelist is not compiled, unless the -f or
-i command line switch is specified.
OS commands can be issued before or after each operation: for
example you can hatch the just created archive file.
ATTENTION:
- Every time a config file is changed, FastLst rebuilds all
the output nodelists, as if the -f command line switch were
specified.
- Every time a PasswordFile is changed, FastLst rebuilds the
nodelists that use it.
- The date of the archive files handled by FastLst is set to
the same value of the contained file (see ArcDate).
INPUT NODELIST FORMAT
The source nodelists and nodediffs must be in standard "St.
Louis" format, as described in FTS-0005. Anyway, FastLst allows
some extensions in order to support 4D points, "German style"
pointlists, easy single node specifications and "verbatim" phone
strings.
4D Point Support: POINT and BOSS keywords
First method:
Points are entered in the nodelist directly following their
bossnode. Each one starts with the "Point,<point>" keyword.
Example:
...
...
,504,Videl,Modena_I,Roberto_Zanasi,39-59-450600,9600,CM,XA,V34
Point,1,Pasquale,Modena_I,Alberto_Pasquale,-!Unpublished-,9600,
Point,2,SysOp,Modena_I,Roberto_Zanasi,-!Unpublished-,9600,
Point,3,Carta,Modena,Francesco_Carta,-!Unpublished-,9600,
...
...
Second method:
Points are entered in the nodelist following the
"Boss,<address>" keyword.
Example:
...
...
Boss,2:332/504
,1,Pasquale,Modena_I,Alberto_Pasquale,-!Unpublished-,9600,
,2,SysOp,Modena_I,Roberto_Zanasi,-!Unpublished-,9600,
,3,Carta,Modena,Francesco_Carta,-!Unpublished-,9600,
...
...
German Point List
This is a "normal" 3D nodelist that lists each Boss as a
"fakenet" HOST, with the real address as the system name,
followed by its points listed as nodes.
Example:
The following nodelist segment lists points 2:2400/1.1 .2 .3:
Host,20000,2400/1,City,Sysop_Name,49-951-999999,9600,CM,V34
,1,System_Name_1,City_1,Sysop_Name_1,49-951-999999,9600,
,2,System_Name_2,City_2,Sysop_Name_2,49-951-999999,9600,
,3,System_Name_3,City_3,Sysop_Name_3,49-951-999999,9600,
The NODE Keyword
Another extension over FTS-0005 is provided to allow easy
addition of nodes in small private lists.
When you need to add a node to your nodelist to call it or to
enforce a session password with it, you can use the
"Node,<address>[ <region>[ <hub>]],..." keyword to avoid the
necessity of adding the entries for its coordinators.
You should specify a full 4D address (point optional).
Any subsequent entry will take the current address as a starting
point.
E.g.: You want to add 9:888/777.3 of Region 88, Hub 700.
Please note that there is no need to specify Region and Hub
information when using the Node and Boss keywords, since:
- if the point's Boss is included via some other nodelist, the
Region and Hub information will be taken from its entry;
- if the point's Boss is not present in the compiled lists, this
point will be removed from the indices (in this case you may
want to use two entries for including both the Boss and the
point);
With "Node,...":
...
...
Node,9:888/777.3,System,City,SysOp,1-234-555-6666,9600,CM
...
...
With "Boss,...":
...
...
Boss,9:888/777
,3,System,City,SysOp,1-234-555-6666,9600,CM
...
...
With the traditional method:
...
...
Zone,9,...
Region,88,...
Host,888,...
Hub,700,...
,777,...
Point,3,System,City,SysOp,1-234-555-6666,9600,CM
...
...
Now let's add 8:101/611 and 8:101/612 in region 10, hub 600:
With "Node,...":
...
...
Node,8:101/611 10 600,System,City,SysOp,1-234-555-6666,9600,CM
,612,System,City,SysOp,1-234-555-6667,9600,CM
...
...
With the traditional method:
...
...
Zone,8,...
Region,10,...
Host,101,...
Hub,600,...
,611,System,City,SysOp,1-234-555-6666,9600,CM
,612,System,City,SysOp,1-234-555-6666,9600,CM
...
...
Verbatim Phones
When a phone entry contains non-numeric characters, it is taken
verbatim (i.e. no dial translation is applied to adjust the area
code and long distance or international prefixes).
Call defaults are defined by the CostVerbatimPhone statement.
Note: you might need to change the dots '.' in internet
addresses to asterisks '*', in order to avoid that the mailer
(e.g. Binkley) translates them: see TypeDef.
Examples:
Internet address:
,6,System,City,SysOp,Fantasy.Com,9600,CM,VM
IP address:
,6,System,City,SysOp,123.456.789.012,9600,CM,VM
Script name:
,6,System,City,SysOp,"Fantasy.Scr",9600,CM,V34
See also the Phone statement.
MISCELLANEOUS INFO
Multiple Sysops
In the case of SysOps of more than one system, all the
name/address couples of compiled entries are output to the SysOp
index.
Redirected Systems
Systems that have no valid phone number (Unpublished, on Hold),
are redirected, provided you do not exclude redirection using
the "NoRedir" config keyword.
A redirected system is given the phone number, baud rate, modem
type, cost and flags of the preceding coordinator, the Board
name is prepended with '-R-'.
If you have a session password with the system to be redirected
or with the system it should be redirected to, no redirection is
done in order to prevent password-mismatch errors in the case
the Unpublished/Hold system calls you.
Points are never redirected.
The systems that have no valid phone number and cannot be
redirected take an EMPTY phone number string, so that your
mailer does not send unexpected strings to your modem attempting
to call these systems, should something appear in your outbound
addressed to them.
Pay attention: if you want to directly call these
null_phone-systems or their coordinators, you have to give them
a phone number using the "Phone" statement in the configuration
file.
INSTALLATION
1) There are 3 versions of FastLst:
OS/2, W32, DOS 32 (with DOS4GW DOS Extender), distributed in
separate archives (see Readme.1st).
Choose the one that fits you better.
2) Write your FastLst.Cfg.
You can find useful examples in the Fast_*.Cfg files and
detailed information in the "CFG REFERENCE" section of this
documentation.
3) Edit your batch file in order to call FastLst whenever you
would like to test for the presence of new list/diff files
and process them. If you do not pass a different pathname as
a command line parameter, FastLst.Cfg must reside in the
current directory.
4) (OS/2): Make sure you have the MSGAPI32.DLL in a directory
contained in your LIBPATH. MSGAPI32.DLL can be found in the
Squish 1.11 archive (SQSHP111.LZH).
(W32): Make sure you have the MSGAPINT.DLL in a directory
contained in your PATH. MSGAPINT.DLL can be found in the
Max 3.01 for Windows archive (MAX301N.ZIP).
(DOS32): Make sure you have the DOS4GW.EXE Dos extender (from
Tenberry Software Inc.) in your path.
The DOS4GW extender requires an XMS or DPMI memory driver
installed in your config.sys: e.g. HIMEM.SYS, QEMM (by
QuarterDeck Office Systems Inc.).
5) FastLst requires a lot of memory to compile long nodelists.
A set of input nodelists totalling 60,000 nodes requires
approximately 12MB for V7+ "in memory" compilation, 7MB when
using "on disk" DTP linking and 4.5MB for simple V7.
You have to decide whether to use the "LinkOnDisk"
statement in the configuration file. If you have enough
physical memory available you should use the default "in
memory" mode. On the other hand, if the execution of FastLst
is excessively slow, you probably are low on memory and you
could benefit by the use of "on disk" DTP linking.
(DOS): Even if "in memory" DTP linking is
configured, FastLst automatically switches to "on disk"
mode if it cannot allocate the needed memory.
If you experience "out of memory" errors, then you have to
enable the DOS4GW virtual memory mode, using the DOS4GVM
environment variable (e.g. for 16MB virtual allocation
size: SET DOS4GVM=VirtualSize#16384).
This works under real Dos only: if you are using OS/2 dos
sessions, use a higher DPMI_MEMORY_LIMIT in the Dos
settings.
Please note that FastLst tells you (on screen, in the
logs, in the report message) how much memory remains during
compilation, so that you can realize when you are running
in marginal conditions and consequently adjust your
configuration before you run out of memory.
COMMAND LINE SWITCHES
-c<cfg>
Use <cfg> configuration file instead of FASTLST.CFG.
-f
Force compilation even if no new list/diff has been
detected.
-i
Ignore FastLst.Dat: run as if it were the first time.
All nodelists compiled, all exports executed.
-p
Prepare: Unarc new lists and diffs, Apply diffs and Arc
new nodelists, do not compile nodelists.
-r
When applying a diff, FastLst usually deletes the newly
generated source nodelist file if a CRC error is
detected. With this switch the new nodelist is _not_
deleted, so that it will be processed anyway.
When compiling a list, FastLst usually aborts the
compilation of the current output nodelist if a CRC
error is detected. With this switch the current output
nodelist will be entirely compiled anyway.
-h or -?
for help
ERRORLEVELS
0 - Normal termination, something compiled
1 - Help requested
2 - File Open error
3 - Abnormal termination
4 - Disk Full
5 - Can't find config file
6 - Configuration error
7 - Out of memory
8 - Read error while applying diff
9 - CRC error (applying diff)
10 - CRC error (compiling list)
11 - User Break
12 - Cannot rename temporary output nodelist files
13 - Cannot open source nodelist file
14 - Timeout waiting on V7+ semaphore
15 - Too many nodelists in inbound directories
16 - Nothing found after unarchiving a fixed-name nodelist
17 - Error Linking output files
100 - Normal termination, nothing compiled
250 - MsgApi: Init Error
251 - MsgApi: Area Open Error
252 - MsgApi: Area Lock Error
253 - MsgApi: Area Close Error
CONFIGURATION
Before analyzing the cfg keywords in detail, let's introduce the
overall mechanism that is at the basis of FastLst's
configuration.
If you are converting from a different nodelist compiler, please
forget the old configuration and start from scratch.
FastLst.Cfg is divided into several logical blocks and the
sequence of the various statements is essential: you cannot just
put keywords somewhere in the config file; they must be arranged
in the correct order.
At first, this characteristic of FastLst's configuration might
appear complex to understand, but, as soon as you will grasp its
logic, you will understand that it's really easy to write a
correct configuration file and you will appreciate its
extraordinary flexibility.
The first block of configuration is the "Global" one.
The verbs in this block refer to the compilation of all the
nodelists.
Then there are one or more "Output Blocks": each output block
refers to the compilation of a single nodelist (e.g.
NODEX.*).
Each "Output Block" has a "Output section" (with statements
regarding the compilation of the whole <NODEX>.* list) and one
or more "Input blocks" containing the verbs that describe how to
compile each of the source nodelists.
The first "Output Block" can optionally be of a special kind: a
"NoCompile" block, whose "Input Blocks" describe nodelists that
must be maintained (e.g. diffs applied) but not compiled to any
<NODEX>.* list.
Some statements can be used in blocks of a particular type only,
others can be used in many different places depending on what
nodelists you want to be affected. As a rule of thumb, you can
use each statement anywhere it seems to be logically acceptable.
If you feel frightened by such abstract considerations, please
take a look at the example Fast*.Cfg files, so that you can
quickly realize it's not that difficult.
To write your own configuration file you should start modifying
the example one that is more adequate to your needs.
Now, let's consider all the verbs that are allowed in FastLst's
configuration.
CFG REFERENCE
- Items between square brackets (e.g. [<item>]) are optional.
- The names of the various Keywords are NOT case sensitive.
- When a directory path is required, the trailing backslash '\'
is optional.
- The ';' character starts comments: any character following the
';' is ignored, unless inside quoted strings.
- The maximum length of configuration lines is 254 characters,
so don't go further (you can always split address lists into
smaller ones).
- In the OS/2 version, any file specification can be a legal
OS/2 name, between double quotes if necessary.
Please, note that the order of the configuration statements
follows some logical rule. In order not to create confusion in
the .cfg file and not to break some _necessary_ order relation,
please follow the scheme proposed in the example Fast*.CFG files
and in this reference documentation.
Please, be aware that the generation of text files (FidoTxt,
FidoPrn, FidoUserLst verbs) and the use of lots of options and
overrides can slow down the compilation process: use only the
options/overrides that you really need if you mind compilation
time.
Include <filename>
You can split the configuration into multiple files, including
them via this statement, which can be used everywhere and
nested without limits.
G L O B A L
The following verbs can be used in the Global section of
FastLst.cfg. Some of them can be used in other places also, so
they are divided into separate sections.
G L O B A L
Section A
The following configuration verbs can be used in the GLOBAL
section of FastLst.Cfg.
RegKey <RegKey>
Registered Users only: <RegKey> is the registration key
and it is NOT case sensitive.
Example:
RegKey dfhyuwru6274623
Priority <type> [<level>]
Changes the execution priority of the FastLst process
(OS/2 only).
Ignored by NT and DOS versions.
<type> is one of: Idle Regular High
<level> is an integer in the range 0...31 and defaults
to 0.
If you do not use this statement, FastLst will run at
the default priority, which normally is "Regular 0".
Examples:
Priority High 31
Gives Fastlst the highest priority for "non
time-critical" processes. It will run fast even if it
is in the background and other processes are active.
Priority Idle
Gives FastLst the lowest priority, so that it loads
the system as minimally as possible. It will run
significantly slower, especially if in the background
or when other CPU intensive processes are in
execution.
StatusLog <LogFile>
<LogFile> is the name of the file where all the
operations performed by FastLst will be logged,
following the "Binkley Style".
In multitasking environments, please be sure to use a
file that cannot be used by other processes at the same
time. For example: if (in your system) FastLst can be
executed while Binkley is running, please use different
log files.
Should you not want the log file, you can comment this
keyword out.
Example:
StatusLog d:\bbs\log\FastLst.log
CompressCfg <compress_cfg>
This is a "Squish style" compress definition file.
In the case you are using a case-sensitive
de/compression program (e.g. OS/2 ZIP/UNZIP), please
make sure to use the correct switches in <compress_cfg>
and/or the correct case (Lower/Upper) in <NodeList> and
<NodeDiff> specifications.
You can find the suggested <compress_cfg> in the example
Compress.Cfg file included in the FastLst pack.
If you are already using Squish and/or Maximus, you can
just specify the name of their compress.cfg (but do
check that they indicate the necessary switches to avoid
case sensitiveness during extraction).
Refer to the "Compress Definition File" section at the
end of this document for the syntax of <compress_cfg>.
InputPath <NodeDir>
Specifies the default path for input files (source
nodelists/nodediffs). You can override it by using a
full pathname in input-file specifications.
Created if not existing.
Example:
InputPath d:\bbs\nodelist\
ArcPath <ArcNodeDir>
Specifies the default path for Archived nodelist files.
It usually points to the file area where your TIC
processor moves the inbound nodelist archives.
You can override it by using a full pathname in
Archived-file specifications.
Example:
ArcPath d:\bbs\file\nodelist\
ArcDate Write|Creation
(OS/2)
Selects the date to be used for computing the age of
fixed-name archived nodelist files.
This setting is useful for HPFS (which has separate
Write and Creation dates) and ignored for FAT.
If not specified, "Creation" is assumed.
Attention: in order to avoid problems in the case the
date has been corrupted during the transfer of the file,
it is best to choose the same date that your mailer sets
as "receive/upload" date or that is touched by your TIC
processor.
Examples:
ArcDate Write ; Use the Write date
ArcDate Creation ; same as default
MultiLineDesc <nnn> [<c>]
By default, files.bbs description must be on a single
line; this statement enables Multi-Line support.
<nnn> is the number of spaces that must precede the
continuation lines.
<c> is the continuation character.
If <c> is NOT specified, it is assumed that the
continuation lines must be preceded by <nnn> spaces.
If <c> IS specified, it is assumed that the continuation
lines must be preceded by <nnn> spaces, the <c>
character and one more space.
For example, to have the 2nd and following description
lines in files.bbs start at the 32nd column, use:
MultiLineDesc 31
A description in files.bbs would be like:
Test.Zip This is the first description line
this is the 2nd line
this is the 3rd line
^ ^^
1 31 32
To have the continuation lines preceded by a '|'
character, use:
MultiLineDesc 29 |
A description in files.bbs would be like:
Test.Zip This is the first description line
| this is the 2nd line
| this is the 3rd line
^ ^ ^
1 29 32
KillAfter
Old output files are killed after the new ones have been
successfully written.
The new output files are written to temporary names,
then the old ones are killed and the new ones renamed
(and FastLst retries for 30s in case of error, to be
multitasking smart).
Thus you will always have a valid compiled nodelist,
even in the case of a compilation error and consequent
compile abortion. Besides, your multitasking system can
continue operations while FastLst is working. On the
other hand you might need some more spare disk space to
hold the old and new files during compilation.
KillSource
Tells FastLst to kill all uncompressed nodelists (that
are also available in archived format) before
terminating.
Please note that FastLst deletes a source nodelist only
if the ArcList statement is defined.
Besides, when the NodeDiff statement is used, an
ArcMethod must be defined to allow the deletion of the
nodelist.
When no NodeDiff is defined, FastLst assumes that the
uncompressed NodeList has been extracted from a
corresponding archive.
BeforeKillSource <command>
This statement is used to invoke a command of your
choice before the source nodelists are killed, upon
FastLst completion.
<command> is executed even if "KillSource" is not used.
It is a means of invoking a command before FastLst ends.
The "NeededBeforeKill" verb must be used to specify the
NodeLists needed by this command: if one of these
nodelists is found new, then this command is invoked
after decompressing all the nodelists that have the
"NeededBeforeKill" attribute (and have not been
decompressed yet).
IMPORTANT: <command> is executed ONLY if some nodelist
affected by a "NeededBeforeKill" verb has been detected
as new.
<command> can be any command that is valid for the
command interpreter specified in your COMSPEC
environment variable.
If <command> invokes an executable file, it is loaded
and executed directly; otherwise your command
interpreter is invoked, so that you can execute a batch
file or any other valid command.
No variable parameters are supported.
Dash2Comma
Change dashes to commas in the phone numbers.
Useful for people that are still connected to ancient
"rotary pulse" electromechanic telephone exchanges.
NoReport
Do not output nodelist statistics
NoRedir
Nodes that do not have a valid phone number (Hold,
Unpublished) are usually redirected to their
coordinators.
When this verb is used, redirection does not take place
and the node is given an empty phone number, so that you
never call a system different from that you think you
are calling.
Please note that (even with no NoRedir verb):
- points are never redirected;
- if you have a password with a system or its
coordinator, this node will never be redirected.
V7BugFix
Circumvents a bug with V7 nodelist in Binkley 2.50 (and
perhaps in many other programs whose V7 search function
was inspired by Binkley's sources) that can sometimes
hide segments of V7 nodelist.
Binkley 2.60 is OK, but some other programs may not: if
you are unsure, keep this keyword active.
MsgLogArea <path> [-$]
Some information about the compilation can be reported
to a fido or squish message area.
<path> indicates a message area for reporting
compilation logs.
-$ specifies that the area is in Squish format;
otherwise it is assumed to be *.MSG.
The "MsgLog" and "LogStats" statements can be used
to add some information that is not reported by default.
Examples:
MsgLogArea \bbs\mail\net -$
MsgLogArea \bbs\mail\net\
MsgRemArea <path> [-$]
The comments found in the compiled nodelists can be
selectively reported to a fido or squish message area.
<path> indicates a message area for reporting
compilation logs.
-$ specifies that the area is in Squish format;
otherwise it is assumed to be *.MSG.
The "MsgRem" statement (see Global Section C) MUST be
used to specify which types of comments you want to be
reported.
Please note that no comments are reported if no "MsgRem"
statement is used.
Examples:
MsgRemArea \bbs\mail\net -$
MsgRemArea \bbs\mail\net\
MsgFromNode <address>
MsgToNode <address>
Specify the addresses for the created messages.
<address> is a 4D address.
Example:
MsgFromNode 2:332/504
MsgToNode 2:332/504.1
MsgTo <name>
Specifies the name of the addressee of the created
messages.
Example:
MsgTo Alberto Pasquale
MsgAttr <attributes>
Specifies the attributes for the created messages.
<attributes> can be a (not case sensitive) combination
of:
P : Private
K : Kill/Sent
C : Crash
H : Hold
D : Direct (crash + hold in squish messages)
Examples:
MsgAttr P
MsgAttr pk
MsgSize <bytes>
Specifies the maximum size of a single message: after
this length, the message is split.
Defaults to 7K, greater values are recommended, so that
the message is not divided into too many parts.
Example:
MsgSize 60000
CostNullPhone <Cost> [<UCost>]
Specifies the costs to be assigned to nodes with empty
(unpublished, etc.) phone number.
<Cost> is the "call cost" .
<UCost> is the "user cost" (fee for netmail messages).
<UCost> defaults to <Cost>.
If CostNullPhone is not used, <Cost> defaults to 65535
and <UCost> to 0.
Example:
CostNullPhone 1000 0
Note:
Some programs might have bugs that cause problems
dealing with high costs (such as the default 65535).
Should you experience problems with entries that have a
"NullPhone", try setting a lower cost e.g.
"CostNullPhone 900 0".
CostVerbatimPhone <Cost> [<UCost>]
Specifies the costs to be assigned to nodes that have
a verbatim phone specification.
<Cost> is the "call cost" .
<UCost> is the "user cost" (fee for netmail messages).
<UCost> defaults to <Cost>.
If the statement is not used, both costs default to 0.
Example:
CostVerbatimPhone 10 0
Dial/Cost translation Table
With this table you specify the dial translations and the costs
to be applied depending on the phone number.
Note: This table is not used against "Verbatim Phones".
The table begins with "Dial" and ends with the "End" keyword.
Each entry has the following format:
<PartPhone> <PreSuf> [<Costs>]
The following two keywords allow to specify groups of exchanges
that must be handled by a certain dial table entry:
LocalValues <PartPhone> <PreSuf> [<Costs>]
This keyword is provided for clarity only: it is
taken just as a normal specification with no
heading "LocalValues".
LocalExchanges <num> ...
Lists all the exchanges that must be handled as per the
preceding dial translation entry (which may be preceded
by the "LocalValues" keyword for clarity).
Please remember that the line length is limited to 254
characters.
You can use multiple "LocalExchanges <num> ..."
statements if you like short lines or need more than
254 characters.
Please note that all numbers that (after <PartPhone>
stripping) begin with <num> are considered local.
For example, if 220, 221, 222, 223, 224, 225, 226, 227,
228, 229 are all local exchanges, you can indicate 22 to
include them all.
The use of these two statements in the place of a long list of
normal table lines (one for each local exchange) should also
speed up the processing of all the nodelist entries that are not
in your area code.
<PartPhone>
is a partial phone number to be matched with the initial
part of nodelist entries. The dashes are ignored. The
<PartPhone> of the last entry must be a single dash "-",
to mean that all the remaining numbers will take the
parameters specified there.
<PreSuf>
can be one of:
a: <Prefix>
b: /<Suffix>
c: <Prefix>/<Suffix>
d: /
<PartPhone> is stripped from numbers beginning with it,
then <PreSuf> is used to prepend/append the specified
strings to the remainder.
Case a: <Prefix> is prepended.
e.g.: "39- 0"
strips "39-" and adds "0" at the beginning of
the number.
Case b: <Suffix> is appended.
e.g.: "39-59- /!"
strips "39-59-" and adds "!" at the end of the
number.
Case c: <Prefix> is prepended and <Suffix> appended.
e.g.: "39- 0/!"
strips "39-", adds "0" at the beginning and "!"
at the end.
Case d: Nothing is prepended nor appended.
e.g.: "/"
The slash is needed to allow the correct
interpretation of the subsequent fields.
No spaces are allowed between prefix, suffix and the
separating slash.
<Costs>
You can specify up to 4 cost fields:
<Cost> [<UCost> [<DigCost> [<DigUCost>]]]
Each one has a range 0-65535.
<Cost> is the Call cost, default: 65535.
<UCost> is the User cost, default: <Cost>.
<DigCost> is the Digital Call cost, default: <Cost>.
<DigUCost> is the Digital User cost.
<DigUCost> defaults to <DigCost> if it is specified, otherwise
it defaults to <UCost>.
If you like your users to send netmail messages from the BBS
with no need for "credits", you should set <UCost> and
<DigUCost> to 0.
When searching for "PartPhone", the first matching entry is
applied: in the case of entries with an initial part in common,
you have to specify them in sequence from the longest to the
shortest. If no match is possible, the last line specifies the
default (thereby international) parameters.
WARNING: This table CANNOT be left totally empty: it must
contain at least the default entry "- [<PreSuf>]".
Example 1a/b/c (North American viewpoint):
There are some groups of phone numbers:
1 - Local numbers.
These are usually "toll free" numbers.
As a rule of thumb, you must only dial the local
number, stripping the Country Code "1" and the
Area Code.
In the case you live at the crossroads of two or
more area codes, it is possible that you have local
numbers in area codes that you must _not_ strip.
2 - Area Code numbers.
They have your same Area Code but they are long
distance.
As far as I know, there are many different
situations regarding the need to dial the long
distance access code "1" and the Area Code.
In any case you usually want to differentiate costs.
The Country "1" and Area Codes must be stripped and
replaced by:
(a) the long distance access code "1"
(b) the long distance access code "1" +
the Area Code
(c) nothing
In case (b) the number really remains untouched.
Even if the Country Code for USA/Canada "1" is
numerically equal to your long distance acces code,
they are conceptually quite different, and so they
will be treated.
3 - Domestic numbers.
USA/Canada numbers, with a leading "1", that is the
international Country Code for USA and Canada.
They must be left untouched, since the american long
distance access code is equal to the international
Country Code for North America.
4 - International numbers.
These are numbers out of USA and Canada.
They must be prefixed by "011", that is the
international access code.
And now let's see how to achieve our goal using
FastLst's Dial Table.
Example 1a:
Let's suppose:
- we are in Area Code 414
- the 414 must be stripped for LD calls
- the local exchanges are 231, 232, 233, 235, 236, 424
Dial
; strip 1-414- from local numbers, do not add
; a prefix, set call and user costs to 0.
LocalValues 1-414- / 0
LocalExchanges 231 232 233 235 236 424
; Remaining "1-414-" numbers are long distance:
; strip the 414 Area Code and assign costs = 25.
1-414- 1- 25
; Remaining "1-" numbers are Domestic Long
; Distance.
; Set costs to 50
1- 1- 50
; Remaining numbers are international.
; Prepend 011 and set call cost to 250 and
; user cost to 500
- 011 250 500
End
Example 1b:
Let's suppose:
- we are in Area Code 604
- the 604 must NOT be stripped for LD calls
- the local exchanges are 220 221 222 224 228 230 231
240 241 244 250 251 252 253 254 255 257 258 261 263
264 266
Dial
; strip 1-604- from local numbers, do not add
; a prefix, set call and user costs to 0.
LocalValues 1-604- / 0
LocalExchanges 220 221 222 224 228 230 231 240
LocalExchanges 241 244 250 251 252 253 254 255
LocalExchanges 257 258 261 263 264 266
; Remaining "1-604-" numbers are long distance:
; assign costs = 25.
1-604- 1-604- 25
; Remaining "1-" numbers are Domestic Long
; Distance.
; Set costs to 50
1- 1- 50
; Remaining numbers are international.
; Prepend 011 and set call cost to 250 and
; user cost to 500
- 011 250 500
End
Example 1c:
Let's suppose:
- we are at the crossroads of Area Codes 510, 408, 415
- "1-510" must always be stripped
- "1-408" and "1-415" must never be stripped
- some exchanges are toll-free, others are not
Dial
; strip 1-510- from local numbers, do not add
; a prefix, set call and user costs to 0.
LocalValues 1-510- / 0
LocalExchanges 224 225 226 227 247 249 252 264 276
LocalExchanges 278 293 317 353 354 416 417
; Specify local exchanges for area code 408,
; keep "1-408".
LocalValues 1-408- 1-408- 0
LocalExchanges 232 251 254 258 259 262 263 272 276
LocalExchanges 321 324 325 383 428 432 433 434
; Specify local exchanges for area code 415,
; keep "1-415".
LocalValues 1-415- 1-415- 0
LocalExchanges 233 234 321 322 323 324 325 326 327
LocalExchanges 328 329 354 424 462 473 493
; Remaining "1-510-" numbers are not free,
; the country and area codes are stripped.
1-510- / 25
; Remaining numbers in area codes 408 and
; 415 are not free, nothing is stripped.
1-408- 1-408- 25
1-415- 1-415- 25
; Remaining numbers in country code "1"
; are domestic: nothing changed, cost 100.
1- 1- 100
; Remaining numbers are international.
; Prepend 011 and set cost to 2000.
- 011 2000
End
Example 2 (European viewpoint):
We differentiate between city, district, domestic and
international.
Dial
LocalValues 39-59- / 5
LocalExchanges 2 3 4 56 81 82 ; city
39-59- / 30 ; district
39- 0 60 ; domestic long distance
43 0043- 100 ; Austria
32 0032- 100 ; Belgium
45 0045- 100 ; Denmark
33 0033- 100 ; France
49 0049- 100 ; Germany
44 0044- 100 ; UK
31 0031- 100 ; Netherlands
34 0034- 100 ; Spain
46 0046- 100 ; Sweden
41 0041- 100 ; Switzerland
1 001- 200 ; USA/Canada
- 00 300 ; others
End
Example 3 (Separate Analog/Digital costs):
For people who pay different charges for analog and
digital calls, FastLst allows to specify separate
digital costs (that will be used for nodes that are
given a Digital ModemType).
Let's suppose we want null User Costs and Digital Costs
twice as high as the Analog ones.
Dial
LocalValues 39-59- / 5 0 10 0
LocalExchanges 2 3 4 56 81 82 ; city
39-59- / 30 0 60 0 ; district
39- 0 60 0 120 0 ; domestic long distance
- 00 300 0 600 0 ; international
End
Example 4:
Minimal table for sysops that make dial translations and
cost assignments somewhere else.
Dial
-
End
Modem Type Table
This table allows to set the Modem Type, costs and dial
translations depending on the nodelist flags.
Syntax:
TypeDef
<Flag> <ModemType> [<Cost> <UCost> [<DialTrans>]]
<Flag> <ModemType> [Digital|Analog]
...
End
<Flag> is a Nodelist flag (max 49 chars),
<ModemType> is a number 0->255.
The nodelist flags of each node are searched for <Flag>s, in the
same order as they are listed in the TypeDef table.
The <Flag> must match completely a nodelist flag: if <Flag> is
V32 and the nodelist flag is V32B, it's not a match.
The search is not case sensitive.
The ModemType field of the compiled nodelist will be determined
by the first match only: If you define X75 before V34, a node
with both V34 and X75 will have a X75 modem type.
When <Flag> is for a PSTN system, you can optionally indicate
whether it is DIGITAL or ANALOG (which is the default); this is
useful for assigning special Digital costs if you have
configured them in the Dial/Cost table.
When <Flag> is for a non-PSTN system (e.g. internet) you can
specify the costs (which override the CostVerbatimPhone) and
dial translations.
<Cost> The Call Cost, range: 0-65535
<UCost> The User Cost, range: 0-65535
<DialTrans> The Dial Translations, for "verbatim" phones.
These dial translations DO NOT affect the indexed entry (in
<NODEX>.PDX) and are intended as a work around for the dial
translations operated by the mailer or the modem-emulator.
The syntax requires a set of strings.
The first character of each string will be substituted
with the remaining characters.
A string containing space ' ' or semi-colon ';' MUST be
included in quotation marks. If the quotation mark is needed
inside the quoted string, it must be double.
15 strings of 5 characters are allowed.
Example:
You need to translate '.' to '*', ':' to ' ', 'v' to
'V'; call_cost=100, user_cost=0:
Typedef
[...]
VM 200 100 0 .* ": " vV
[...]
End
You want to translate '.' to '\.', ':' to ' ', 'v' to
'V'; call_cost=150, user_cost=100:
Typedef
[...]
VM 200 150 100 .\. ": " vV
[...]
End
Recommended dial translations for Binkley and VMODEM:
-\- .* vV ~\~ ": "
Full example of TypeDef table:
for USR Courier I-modem + VMODEM:
TypeDef
X75 1 Digital
ISDNC 1 Digital
V120 2 Digital
V120H 2 Digital
V120L 3 Digital
V34 4 Analog
VFC 5 Analog
V32T 6 Analog
H16 7 Analog
V32B 8 Analog
ZYX 8 Analog ; ZYX implies V32B
Z19 8 Analog
Z16 8 Analog
H14 9 Analog
V32 10 Analog
HST 11 Analog
VM 200 100 0 -\- .* vV ~\~ ": " ; VMODEM
End
In Binkley.Cfg for the I-modem you can use:
ModemTrans 0
ModemTrans 1 AT*V2=6D/ ; X75
ModemTrans 2 AT*V2=1D/ ; V120
ModemTrans 3 AT*V2=1D/ ; V120L
ModemTrans 4 AT*V2=3B0D/ ; V34
ModemTrans 5 AT*V2=3B0D/ ; VFC
ModemTrans 6 AT*V2=3B0D/ ; V32T
ModemTrans 7 AT*V2=3B1D/ ; H16
ModemTrans 8 AT*V2=3B0D/ ; V32B
ModemTrans 9 AT*V2=3B1D/ ; H14
ModemTrans 10 AT*V2=3B0D/ ; V32
ModemTrans 11 AT*V2=3B1D/ ; HST
ModemTrans 200
In Binkley.Cfg for VMODEM you can use:
ModemTrans 0
ModemTrans 1
ModemTrans 2
ModemTrans 3
ModemTrans 4
ModemTrans 5
ModemTrans 6
ModemTrans 7
ModemTrans 8
ModemTrans 9
ModemTrans 10
ModemTrans 11
ModemTrans 200 ATDT#/ ; VMODEM
User Flags Table
This is an optional table used to handle the "user defined" bits
in the Flags word of the compiled nodelist entry.
These bits are named 5,6,7,8,9,A,B,D,E,F where bit 5 is the 6th
bit and F is the 16th bit of the word.
Using this table, you can associate (source) nodelist flags to
user defined bits in the output binary nodelist.
The table is delimited by the "FlagDef" and "End" keywords; each
line is in the form "<sFlag> <bFlags>" where <sFlag> is a flag
(max 9 chars) to be looked for in the source nodelists while
<bFlags> represents one or more user-defined bits in the output
Flags word.
Example:
FlagDef
V42B AB ; V42B -> user bits A and B
V32B DE ; V32B -> user bits D and E
End
To add further flags on a node by node basis, please use the
"Flags <Addr> <Flags>" statement.
To remove flags, please specify the source flags via the
"NodeFlags <Addr> <NodeFlags>" statement.
G L O B A L
Section B
The statements in this section affect the processing of all
the output blocks and thereby of all the input nodelists.
These statements can also be used in the "OUTPUT" section of an
OUTPUT block or inside an INPUT block, in which case they affect
the compilation of the relevant block only.
In the case you use a verb that has already been used in a
"higher level" block, it will behave as a local override.
NeededBeforeKill
Tells FastLst that the affected NodeList(s) are needed
by the command run via the "BeforeKillSource" statement.
The "BeforeKillSource" verb allows you to run a command
(executable or batch file) after the compilation has
completed, just before FastLst ends and (if "KillSource"
is used) deletes the source files that are also present
in archived form.
The lists affected by "NeededBeforeKill" are extracted,
if not already present, before the "BeforeKillSource"
command is executed.
ArcMethod <meth>[,<f>] ...
Tells FastLst that it must make sure that all new
nodelists are archived using the specified methods.
The original archive is NOT killed.
Obviously, a new nodelist is not rearchived to its
original method.
<meth> is the name of an archiver defined in
compress.cfg.
<f> is the optional specification of the letter to be
used for the variable archive extension. If not
specified, it is assumed equal to the first letter of
the defaults extension for this archiver.
Multiple ArcMethod statements are allowed.
Example 1:
ArcMethod ZIP LH,H
NodeList.Z48 arrives: it is archived to NodeList.H48
also, using the LH archiver.
Example 2:
ArcMethod ZIP LH
NodeDiff.Z48 arrives: the resulting nodelist is archived
to NodeList.Z48 using the ZIP archiver and to
NodeList.L48 using LH.
ArcDiffMethod <meth>[,<f>] ...
Tells FastLst that it must make sure that all new
nodediffs are archived using the specified methods.
The original archive is NOT killed.
Obviously, a new nodediff is not rearchived to its
original method.
<meth> is the name of an archiver defined in
compress.cfg.
<f> is the optional specification of the letter to be
used for the variable archive extension. If not
specified, it is assumed equal to the first letter of
the defaults extension for this archiver.
Multiple ArcDiffMethod statements are allowed.
Example:
ArcDiffMethod ZIP LH,H
NodeDiff.Z48 arrives: it is archived to NodeDiff.H48
also, using the LH archiver.
EXTERNAL COMMANDS
The following verbs allow to invoke external commands.
<command> can be any legal command-line command: it can be the
name of an executable file, a batch file or any command that can
be understood by your command-line interpreter (OS/2's CMD,
4OS2, etc.).
If <command> does not directly invoke an executable file,
FastLst automatically invokes your default command line
interpreter (as specified by the COMSPEC environment variable).
Archive Related Commands
The following verbs share the same syntax:
Two parameters are allowed in <command>:
%a is translated to the full pathname of the archive file.
%f is translated to the name of the file to be added or
extracted (no path).
<command> is run from the path where %f belongs.
BeforeArcList <command>
Command to be run before archiving a nodelist.
AfterArcList <command>
Command to be run after archiving a nodelist.
BeforeUnArcList <command>
Command to be run before extracting a nodelist.
AfterUnArcList <command>
Command to be run after extracting a nodelist.
BeforeArcDiff <command>
Command to be run before archiving a nodediff.
AfterArcDiff <command>
Command to be run after archiving a nodediff.
BeforeUnArcDiff <command>
Command to be run before extracting a nodediff.
AfterUnArcDiff <command>
Command to be run after extracting a nodediff.
Example
To hatch the new nodelist (note that you probably need to
specify the location of the config file since the command is
executed from the directory where %f resides):
AfterArcList Hatch %a NODELIST "New NodeList"
NodeDiff Related Commands
The following verbs accept different parameters:
%l is translated to the full pathname of the nodelist.
%d is translated to the full pathname of the nodediff.
<command> is run from the current directory.
BeforeEdit <command>
Command to be run before applying a nodediff.
AfterEdit <command>
Command to be run after applying a nodediff.
Only %l can be used.
G L O B A L
Section C
The statements in this section affect the processing of all
the output blocks and thereby of all the input nodelists.
These statements can also be used in the "OUTPUT" section of an
OUTPUT block (except for the "NoCompile" one) or inside an INPUT
block, in which case they affect the compilation of the relevant
block only.
In the case you use a verb that has already been used in a
"higher level" block, it will behave as a local override.
MsgRem [<string>]
If MsgRemArea is used, FastLst reports the following
comments:
No MsgRem statement: none;
MsgRem with no <string>: all;
MsgRem with <string>: only the comments that begin with
";<l> " where <l> is one of the characters in <string>.
The ";" character in <string> means that the comments
beginning with "; " or ";<word>" can be reported.
Common types of comment lines:
;S This is a comment for SysOps
;U This is a comment for users
;F This comment should appear in formatted Fido lists
;A This is a comment of general interest
;E This comment is an error message
Example:
"MsgRem SE"
Only comments destined to SysOps and Error messages are
reported (lines beginning with ";S " and ";E ").
MsgLog [NullPhone] [Redirected] [Points]
Some common situations (not really errors) are not
reported to MsgLogArea by default: if you want FastLst
to report them anyway, you can use this statement, but
be aware that very long reports could come out.
"NullPhone": systems with empty phone string are logged.
"Redirected": systems redirected to their coordinators
are logged (Hold, unpublished).
"Points": points with empty phone string are logged; be
aware that most pointlists contain unpublished (thereby
with empty phone) points.
Examples:
MsgLog Redirected
MsgLog Redirected NullPhone
GermanPointList
Instructs FastLst to consider the affected nodelist as a
3D German style pointlist. Zone 2 is assumed, if not
explicitly specified in the "NodeList" statement.
This verb is usually used inside an Input Block, so that
it affects that nodelist only.
WARNING: Be aware that using this statement in the
global section or in an Output block affects all the
involved nodelists !
Example Input Block:
NodeList Points24.???
GermanPointList
Nodediff Pr24Diff.???
ArcList Points24.??? 1
ArcDiff Pr24Diff.??? 5
ArcListDesc R24 PointList for day %d (%D), %a format
ArcDiffDesc R24 PointDiff for day %d (%D), %a format
NoPointLstPhone
Changes to "-Unpublished-" the phone numbers specified
in the PointLists (German or "Boss" styles).
If you use Squish and Binkley, you usually will like
pointlists with the Boss' phone in the point entries
(otherwise a crash message to a point will have to be
manually readdressed to its Boss).
But if you use a netmail manager (as NmFwd) that already
routes the crash messages for points that do not have a
phone to their Boss, then you will probably like this
statement.
You will usually find convenient to use this statement
in the global section, so that it is valid for all the
nodelists.
BeforeCompile <command>
Command to be run before compiling the affected
nodelist.
This statement follows the same rules explained in
"External Commands" in section B.
The %l parameter is translated to the full pathname of
the nodelist.
<command> is run from the current directory.
AfterCompile <command>
Command to be run after compiling the affected nodelist.
This statement follows the same rules explained in
"External Commands" in section B.
The %l parameter is translated to the full pathname of
the nodelist.
<command> is run from the current directory.
FidoTxt [<FidoTxt>]
Generate an 80 Column Text List of nodes.
Nodes included via the "Node,..." method and points are
excluded.
<FidoTxt> optionally specifies an output file name,
which defaults to "NodeList.Txt". If the same file name
has already been used for other nodelists, the output is
appended.
Example:
FidoTxt
FidoPrn [<FidoPrn>]
Generate a 132 Column Text List of nodes.
Nodes included via the "Node,..." method and points are
excluded.
<FidoPrn> optionally specifies an output file name,
which defaults to "NodeList.Prn". If the same file name
has already been used for other nodelists, the output is
appended.
Example:
FidoPrn
IncCoord <CoordLev>
The coordinators of the specified and upper levels will
be always included, even if excluded by "IncAddr" and
"ExcAddr". <CoordLev> can be ZC, RC, NC, HC.
Example:
IncCoord NC
Global Export Section
You can use here the statements described in the "Export Global
Section" of the "Export Block" (see "Input Block" inside "Output
Block").
O U T P U T B L O C K
The following verbs define the compilation of a single output
binary nodelist.
The block begins with a "Output Section", that affects the
compilation of all the source (input) nodelists, followed by a
sequence of "Input Blocks" that define how to handle each of the
source nodelists.
The first "output block" can be of a special kind: if the
"NoCompile" statement is used instead of "Version7+", this block
indicates the actions necessary to maintain the specified
nodelists, but they are not compiled.
Version7[+] <Path> <Nodex> [<Sysop>[.<Ext>]]
Start of a block of config verbs defining the generation
of an output nodelist. You can generate one or more
compiled nodelists with different names and path for the
output files. Each "Version7" statement marks the
beginning of a new output-nodelist definition.
Version7+ is for V7+ while Version7 allows to save space
and generate the V7 files only.
<Path> is the path where the output binary data and
index files are placed.
<Nodex> is the file name (no extension) for the output
files.
<Sysop>.<Ext> is the file name for the sysop-index.
When no extension is given, .NDX is assumed if
<Sysop> is different from <Nodex>, otherwise the .SDX
extension is used.
If you omit <Sysop> with Version7+, <Nodex>.SDX is used
for the SysOp index.
If you omit <Sysop> with Version7, no SysOp index is
generated.
Usually <Nodex> should be "NODEX" and <Sysop> "SYSOP".
If you use V7+ and all of your applications accept
<NODEX>.SDX as the SysOp index, you may omit <Sysop>.
For compatibility with V7 applications that require
"SYSOP.NDX" as SysOp index, "SYSOP" is recommended for
<SysOp>.
All the following verbs, up to the next "Version7" (if
any), are related to the preceding "Version7" output
files.
Examples:
; SysOp Index name
Version7+ d:\bbs\v7\ NODEX SYSOP ; SYSOP.NDX
Version7+ d:\bbs\v7\ NODEX NODEX ; NODEX.SDX
Version7+ d:\bbs\v7\ NODEX ; NODEX.SDX
Version7 d:\bbs\v7\ NODEX SYSOP ; SYSOP.NDX
Version7 d:\bbs\v7\ NODEX NODEX ; NODEX.SDX
Version7 d:\bbs\v7\ NODEX ; no index
Version7 Output files:
<Nodex>.DAT Nodelist Data
<Nodex>.NDX Address Index
<Sysop>.NDX SysOp Index (optional)
Some Version7 programs also accept <Nodex>.SDX for the
SysOp Index.
Version7+ Output files:
<Nodex>.DAT Nodelist Data
<Nodex>.DTP Additional Data
<Nodex>.NDX Address Index
<Nodex>.SDX SysOp Index
<Nodex>.PDX Phone Index
Version7+ programs must also be configurable to accept
<Sysop>.NDX as the SysOp Index for compatibility with V7
programs.
NoCompile
This verb can be used to start the first "Output Block",
instead of "Version7".
This way the first output block becomes a "NoCompile"
block and the indicated nodelists are maintained but not
compiled.
This is a means for maintaining a NodeList (applying
nodediffs, archiving with different archivers etc.)
without compiling it.
The statements related to nodelist compilation (see
Global section C) are obviously illegal in a "NoCompile"
block.
O U T P U T Section
The following verbs affect the compilation of the current output
block and must precede the definitions of the input blocks
(which start with the Nodelist statement).
FidoUserLst [<FidoUserLst>]
Generate "fidouser.lst style" text SysOp list.
<FidoUserLst> optionally specifies an output file name,
which defaults to "FidoUser.Lst". Different output
blocks require different names.
Example:
Version7+ d:\bbs\v7 NODEX SYSOP
FidoUserLst
LinkOnDisk
Forces "on disk" DTP linking.
This can be useful to avoid FastLst using virtual memory
for linking the <NODEX>.DTP file.
If you do not have enough free physical memory (12MB for
60,000 nodes), the "on disk" mode is faster.
Example:
Version7+ d:\bbs\v7 NODEX
LinkOnDisk
LogStats
Output Statistics to MsgLogArea.
This statements makes FastLst write the statistics for
the current output-nodelist to the area specified with
MsgLogArea.
Example:
Version7+ ...
LogStats
Block Specifications
You can use here the same statements described in the "Global
Section B" and (if this is not a "NoCompile" block) "Global
Section C" and "Export Global Section" (see the Export Block
below).
ADDRESS SPECIFIC STUFF
The following verbs define address specific stuff that will
affect the compilation of all the source nodelists compiled in
the current output block. These statements are illegal in a
"NoCompile" block.
If you prefer, you can specify this type of information in the
"Address Specific Stuff" section of the pertinent input block.
WARNING: make sure all addresses have full info (incl. zone).
Password <Addr> <Password>
Allows to specify <Password> one <Addr> at a time.
Version 7 has no limit on password length, however the
programs that use it are usually limited to 8 chars.
Some (rare) programs have problems with 8 chars and need
a maximum of 7 or 6 chars.
Example:
Password 2:332/504.4 Password
PasswordFile <PasswordFile>
Allows to include a password file that contains many
address/password couples, one per line.
In this file you can omit the "Password" keyword.
If you like, you can use some "Password" keywords
together with one or more "PasswordFile".
Please note that the definitions found in this file have
effect on the current (Output or Input) block ONLY.
FastLst writes to the log file which source or output
nodelist is affected by each passwordfile; so, in case
of doubts, just check the logs.
Example:
PasswordFile fidonet.pwd
Phone <Addr> <Phone> [<NodeFlags> [<Cost> [<UCost>]]]
Allows to override a nodelist phone number and
optionally the corresponding "NodeFlags" and costs.
if <Phone> contains non-numeric characters, it is taken
verbatim
If <Phone> contains only digits and dashes '-', it is
considered a PSTN number and MUST be in the form used in
the source nodelist (dial translation will be applied
normally).
<NodeFlags> has the same meaning as in the NodeFlags
statement. To specify an overriding empty <NodeFlags>,
use a single comma.
<Cost> and <UCost> have the same meaning as in the Cost
statement.
Examples:
<Phone> override only:
Phone 2:332/501.1 39-59-399999 ; Normal override
Phone 1:106/2000 juge.com ; internet address
Phone 1:123/4567 123.456.789.012 ; IP address
Phone 2:245/6789 "Bob.scr" ; quoted script name
<Phone> and <NodeFlags> overrides:
Phone 2:332/501.0 39-59-499999 V34,CM ; Set new flags
Phone 2:332/501.1 39-59-399999 , ; Set NO flags
<Phone>, <NodeFlags> and <Cost>/<UCost> overrides:
Phone 2:332/501 39-59-499999 V34,CM 10 0
Phone 2:332/502 mega.com VM 0 ; <Cost> == <UCost>
NodeFlags <Addr> <NodeFlags>
Allows to substitute the flags listed in the nodelist
entry of <Addr>.
If you want to change the CM flag or modem type flags
(HST, V32b, ZYX) etc, you can use this verb. Please note
that the old flags are lost, so you need to indicate all
the necessary flags.
Please note that <NodeFlags> might be empty.
Example:
NodeFlags 2:332/501.0 CM,H16,V32b
Flags <Addr> <Flags>
The Flags statement allows to set the "user defined"
bits in the Flags word of the compiled nodelist entry.
These bits are named 5,6,7,8,9,A,B,D,E,F where bit 5 is
the 6th bit and F is the 16th bit of the word.
These bits are "ORed" with those already set by the
"FlagDef" table.
If you need to zero some of the bits, please specify the
source flags with the "NodeFlags" statement.
Example:
Flags 2:332/501.0 AB5 ; Set bits 5,A & B.
Cost <Addr> <Cost> [<UCost>]
<Cost> and <UCost> are in the range 0->65535.
Overrides the Cost and User_Cost fields of <Addr> in the
compiled nodelist. If no <UCost> is given, it's taken
equal to <Cost>.
Example:
Cost 2:332/501.0 150
SEGMENT SELECTION
The following verbs allow to include or exclude selected
<NodeList> segments. If you do not use them, the full <NodeList>
is compiled. Be aware that the process of checking each address
against the list of segments to be included or excluded might
slow down the compilation, even if some gain could come from the
exclusion of large segments.
These statements are obviously illegal in a "NoCompile" block.
These statements can be used in an Input block to affect that
nodelist only.
IncAddr <PartAddrLst>
If you want to selectively include nodelist segments,
you can use this option: only zones, regions, nets,
hubs, nodes, points that are listed in <PartAddrLst>
will be present in the output files. You can specify
zone, region/net, hub/node and point numbers.
Example:
IncAddr 1 2:33 2:200/100 3:632 4:801/17
Compiles: zone 1, region 33 of zone 2, hub 100 of net
200 of zone 2, net 632 of zone 3, node 4:801/17
ExcAddr <PartAddrLst>
If you want to exclude some segments from the
compilation, you can list them in <PartAddrLst>, in the
same way as for "IncAddr". You can use either "IncAddr"
or "ExcAddr" or both of them to Include only selected
segments and exclude sub-segments.
Example:
ExcAddr 2:332/500
Excludes Hub 500 of net 332 of zone 2.
I N P U T B L O C K
The Input Block starts with a "NodeList" statement and continues
until the start of the next Input or Output Block (NodeList or
Version7 statement respectively) or the end of the configuration
file.
NodeList <NodeList> [<PartAddr> [<Region> [<Hub>]]]
Start of a block of config verbs defining the processing
of the specified <NodeList> file. You can use many
"NodeList" statements to compile several different
source nodelists into the same output files specified by
the preceding "Version7+" statement. Each "NodeList"
verb marks the beginning of a new input-nodelist
processing-info block.
When an address is present in more than one <NodeList>
(e.g. you compile both the full nodelist and the faster
updated local region or zone segment) only the entry
found in the last compiled <NodeList> is put in the
indices. To have the most up-to-date entries in your V7
indices, please include local segments after the larger
list.
<NodeList> is the name of the input nodelist.
If you don't specify a path, <InputPath> is assumed.
If a terminal ".???" is specified, all the files with 3
digits in the place of '???' are examined and that with
the latest 3 digit day of the year is chosen for
compilation.
The optional <PartAddr> is a partial address that must
be specified for nodelist segments that do not have full
address info. For example, a REGION segment usually
starts with the "Region," keyword and does not contain
any Zone info: its up to you to tell FastLst which zone
we are talking about. For the same reason you should
provide zone and net info when compiling a Hub segment.
For Net segments you should also specify the <Region>
and for simple lists of nodes or points the <Hub>.
Anyway FastLst is smart enough to automagically gather
Region and Hub information (when possible) from:
- same node present in a larger segment (Region and Hub)
- other node with same zone:net (Region only)
- Boss of the point (Region and Hub)
Note: points that do not have a Boss are removed from
the indices.
Examples:
IMPORTANT: Please note that the following lines
represent a list of examples, NOT an example of
multiple nodelist compilation.
After each "NodeList" verb, you must specify all the
statements that affect the compilation of that
particular source file.
1) NodeList nodelist.??? ; Fidonet nodelist
2) NodeList region.033 2 ; Region 33 list, zone 2
3) NodeList region24.??? 2 ; Region 24 list, zone 2
4) NodeList net.332 2 33 ; Net list, zone 2, region 33
5) NodeList hub.500 2:332 33 ; Hub list, zone 2, net 332,
; region 33
6) NodeList locnode.500 2:332 33 500
; Some nodes, zone 2, net 332,
; region 33, hub 500
7) NodeList points.504 2:332/504
; Points of 2:332/504 in
; "Point," format
8) NodeList morenode.lst ; Some nodes in the "Node,"
; format. No <PartAddr> required
; since the "Node," line gives
; full address info.
9) NodeList ptlist.??? ; Point List in the "Boss,"
; format. No <PartAddr> required
; since the "Boss," line gives
; full address info.
Input Section
The following statements affect the handling of the nodelist
specified by the last "NodeList" statement (current Input
Block).
NodeDiff <NodeDiff>
<NodeDiff> is the name of the nodediff file.
If you don't specify a path, <InputPath> is assumed.
<NodeDiff> must terminate with ".???". FastLst will
search for a suitable <NodeDiff>, considering the files
that have a 3 digit day of the year in the place of the
trailing '???'.
Example:
NodeDiff NODEDIFF.???
ArcList <ArcList> [<Keep#>]
You can specify the name of the archive containing
<NodeList>. It is necessary if you use automatic
extraction/rearchiving, but it can even be used only to
delete old files.
<ArcList> is used to extract new nodelists, to compress
them using the methods defined in "ArcMethod", to
compress the new nodelists after the application of
nodediffs.
If <ArcList> has a terminating ".???", all the files
that have a suitable fixed (.zip, .lzh etc.) or variable
(.z10, .z17, .l10, .l17 etc.) extension are considered,
taking the digits as the last 2 digits of the day of the
year.
If you really want to limit search to a specified fixed
or variable extension, you can do:
"ArcList nodelist.zip", to consider .zip only;
"ArcList nodelist.z??", to consider .z?? only.
<Keep#> optionally specifies the number of archives to
be kept, basing on the day of the year (the modification
file date is also used to infer the correct
chronological order).
If you maintain archives with multiple different
extensions (.z??, .l??, etc.) the actual number of files
increases, since multiple files with the same day
extension count for one.
The description associated to the deleted files is
removed from FILES.BBS.
Example:
ArcList nodelist.??? 1
ArcDiff <ArcDiff> [<Keep#>]
You can specify the name of the archive containing
<NodeDiff>. It is necessary if you use automatic
extraction/rearchiving, but it can even be used only to
delete old files.
<ArcDiff> must terminate with ".???".
All the files that have 2 digits in the place of the
last 2 '?' are examined, taking the digits as the last 2
digits of the day of the year.
If you really want to limit search to a specified
extension, you can do:
"ArcDiff nodediff.z??", to consider .z?? only.
<Keep#> optionally specifies the number of archives to
be kept, basing on the day of the year (the modification
file date is also used to infer the correct
chronological order). In the case of multiple archive
extensions, the actual number increases consequently.
The description associated to the deleted files is
removed from FILES.BBS.
Example:
ArcDiff nodediff.??? 5
ArcListDesc <Desc>
ArcDiffDesc <Desc>
You can specify a description to be added to FILES.BBS
for the new nodelist and nodediff files created by
FastLst.
Some parameters are available:
%d : the 3 digit day number (0 padded)
%a : the archiver name
%D : the date, USA format (Feb 10, 1995)
%L : the date, Local format
Example:
ArcListDesc Fido Nodelist for day %d (%D), %a format
ArcDiffDesc Fido Nodediff for day %d (%D), %a format
Local Specifications
You can use here the same statements described in the "Global
Section B" and (if we are not in a "NoCompile" block) "Global
Section C" and "Export Global Section" (see the Export Block
below).
ADDRESS SPECIFIC STUFF
You can specify here the address specific stuff that is related
to the current source nodelist (if not inside a "NoCompile"
block).
If you have already used the "Output section" for specifying
this kind of information, you can skip this section.
WARNING:
Often you will compile segments of a previously compiled
nodelist. For example you could have a "NodeList nodelist.???"
block for the world nodelist and then a "NodeList region.033"
block for your region's nodelist segment.
The majority of entries in the latter will be duplicates of
entries already found in the former. However, in the case of
duplicates, only the entries found in the last involved
"NodeList" block will go to the indices and be active. This way
you can compile the full world nodelist while keeping your
segment up-to-date with local segments that get updated faster
than the full nodelist.
When you have to specify "Address Specific Stuff" for nodes that
are present in more than one "NodeList", you must do that in the
last involved "NodeList" block (or in the Output Section, of
course), otherwise your indications will have no effect.
For a list of allowed statements, please see the "Address
Specific Stuff" section of the "Output" section above.
SEGMENT SELECTION
You can use here the same statements described in "Segment
Selection" in the Output Section (if not inside a "NoCompile"
block).
EXPORT Block
FastLst can "export" segments of nodelist: e.g. you can export
the Region 25 from the world nodelist to a file called
Region25.???, where ??? stands for the day of the year. Note
that this feature is for exporting segments of nodelist to a
dedicated file. To compile segments you should continue using
the "Segment Selection" section of FastLst.Cfg.
These blocks MUST be at the _END_ of an "Input Block"; there can
be multiple Export Blocks in a single Input Block.
Obviously the Export Block is available for compiled nodelists
only, thus it is illegal inside a "NoCompile" block.
The export is done ONLY when a new NodeList is found (or when
the file to be exported exists neither in uncompressed nor in
archived form), even if the config file is changed. So, you can
safely hatch the created arcfile via the AfterArcExport command
with no danger of hatching it all the times you change something
in the cfg. Under these conditions, if you really want to export
anyway, you must use the -i command line switch.
IMPORTANT: If you use the same export filename for multiple
source nodelists, all the exported segments are appended one
another. This way, if you like, you can make FastLst generate a
"plain" nodelist file with many different source nodelists in
it, just appended one after another. Some people need this
feature to create input for some other program. For this feature
to work, you need to specify the '+' parameter in the "Export"
statement. See "Export Example" below.
Export [+] <file> [<PartAddrLst>]
The '+' sign must be specified when you want to create a
joined list by exporting multiple nodelists to the same
export <file>. This way the exported file will be
created every time the nodelist is compiled and its
timestamp will not be changed to be equal to the source.
<file> is the name of the file to which you want to
export the selected segment(s).
<PartAddrLst> is the partial address list of segments to
be exported. Usually it is a single partial address.
If omitted, the entire nodelist is exported (useful to
create a joined nodelist).
This statement marks the start of an "Export Block".
Multiple "Export Blocks" are allowed in the same "Input
Block".
N.B. The Export blocks must be at the _END_ of an input
block. See "Export Example" below.
Example:
Export region25.??? 2:25
Export Section
The following verbs define the parameters for the Export
specified by the last "Export" statement.
ArcExport <arcfile> [Keep#]
<arcfile> is the name of the archive file to which you
want to compress the exported <file>.
[Keep#] is the optional number of archive versions to be
kept, basing on the day of the year (the modification
file date is also used to infer the correct
chronological order).
Example:
ArcExport region25.??? 2
ArcExportDesc <description>
<description> is the description to be applied to
FILES.BBS when a new archive is created.
Example:
ArcExportDesc Region 25 %D, %a format
Export Global Section
The following verbs can be used in the "Export Section" of an
"Export Block", in the "Input Section" of an "Input Block", in
the "Output Section" of an "Output Block", in the "Global
Section".
In few words, they are legal everywhere except for the
"NoCompile" block.
Depending on their positions, they affect the involved nodelists
only.
ArcExportMethod <meth>[,<f>] ...
Specifies the archive type(s) to be created for the
exported file.
<meth> is the archiver name as defined in Compress.Cfg.
<f> is the optional first letter to be used for variable
archive extensions.
Example:
ArcExportMethod zip lh,H
BeforeArcExport <command>
AfterArcExport <command>
Commands to be run before/after archiving the exported
file.
<command> can be any type of command (executable file,
batch file, internal command, alias, etc.) and supports
the %a (full archive name) and %f (name of the file to
be compressed, no path) and is run from the directory
where %f resides.
WARNING: since <command> is executed from the directory
where the file to be compressed belongs, you might need
to specify the location of the config files used by the
programs invoked via <command>.
Example:
AfterArcExport Hatch %a
ExportNeededBeforeKill
Specifies that the exported file is needed by the
"BeforeKillSource" command.
Export Example:
NodeList nodelist.???
NodeDiff nodediff.???
ArcList nodelist.??? 2
ArcDiff nodediff.??? 5
ArcListDesc Fido Nodelist for day %d (%D), %a format
ArcDiffDesc Fido Nodediff for day %d,(%D), %a format
Export region25.??? 2:25
ArcExport region25.??? 1
ArcExportDesc Region 25 %D, %a format
ArcExportMethod zip lh
AfterArcExport Hatch %a
Export region24.??? 2:24
ArcExport region24.??? 1
ArcExportDesc Region 24 %D, %a format
ArcExportMethod zip
Export Example to generate a joined list:
NodeList nodelist.???
NodeDiff nodediff.???
ArcList nodelist.??? 2
ArcDiff nodediff.??? 5
ArcListDesc Fido Nodelist for day %d (%D), %a format
ArcDiffDesc Fido Nodediff for day %d,(%D), %a format
Export + megalist.Lst
NodeList zonelist.???
NodeDiff zonediff.???
ArcList zonelist.??? 2
ArcDiff zonediff.??? 5
ArcListDesc Zonelist for day %d (%D), %a format
ArcDiffDesc Zonediff for day %d,(%D), %a format
Export + megalist.Lst
ArcExport megalist.??? 1
ArcExportDesc MegaList, %a format
ArcExportMethod zip lh
COMPRESS DEFINITION FILE
The file specified in the CompressCfg statement is a sequence of
Archive definition blocks, each one starting with "Archiver" and
ending with "End Archiver". You can find an example in the
Compress.Cfg file included in the distribution pack.
The order of the archive definition blocks within this file may
be important: when trying to unpack a compressed file, the list
of archivers is scanned in a reverse order.
In the case of two archivers that use the same identification
string (e.g. ARC and PAK), you must specify the archiver that
can unpack both (PAK) after the other one (ARC).
The compress.cfg file can be shared between DOS/NT and OS/2
applications: the "DOS" and "OS2" keywords are available to
distinguish between the commands to be used under DOS/NT and
OS/2.
O.S. specific archivers or commands must be prefixed with the
relevant keyword.
IMPORTANT NOTE: The lines that begin with "DOS" or "OS2" are
parsed by the DOS/NT and OS/2 versions respectively. If you need
the OS/2 version to execute a DOS command, you MUST NOT use the
DOS keyword: if you do, it will never parse that line; if you do
not, it will execute the DOS command "normally", provided you
have installed OS/2's Dos support.
See the examples below.
Archiver <ARCname>
Starts the Archive definition block.
<ARCname> is the name used to identify this archiver.
Example:
Archiver ZIP
Extension <ext>
Specifies the default extension for the compressed
files.
Example:
Extension ZIP
Ident <ofs>,<ID>
<ofs> is a decimal integer number representing the
offset at which an archive identity marker <ID> must be
present.
Negative values can be used to indicate offsets from the
END of a compressed file. -1 means "the last byte", -2
"the second last byte" and so on.
<ID> is a series of hexadecimal figures which represent
the bytes of the marker string that must be present at
the specified offset of the archive file.
Example:
Ident 0,504b0304 ; "PK^c^d"
Add <command>
Specifies the command to add files to an archive.
%a and %f are translated to the name of the archive and
file to add.
Example:
Add zip -jk %a %f
Extract <command>
Specifies the command to extract files from an archive.
%a and %f are translated to the name of the archive and
file to extract.
Example:
Extract unzip -qqnjC %a %f
View <command>
This line is recognized and accepted for compatibility,
but not used.
End Archiver
This statement is used to close a Archive definition.
Examples
Complete example 1 (you need OS/2 only):
Archiver ZIP
Extension ZIP
Ident 0,504b0304
Add zip -jk %a %f
Extract unzip -qqnjC %a %f
View unzip -v %a
End Archiver
Complete example 2 (you need DOS only):
Archiver ZIP
Extension ZIP
Ident 0,504b0304
Add pkzip -a %a %f
Extract pkunzip -n %a %f
View pkzip -v %a
End Archiver
Complete example 3 (you need both OS/2 and DOS):
Archiver ZIP
Extension ZIP
Ident 0,504b0304
OS2 Add zip -jk %a %f
DOS Add pkzip -a %a %f
OS2 Extract unzip -qqnjC %a %f
DOS Extract pkunzip -n %a %f
OS2 View unzip -v %a
DOS View pkzip -v %a
End Archiver
Complete example 4 (archiver to be used under DOS only):
DOS Archiver ZOO
DOS Extension ZOO
DOS Ident 0,5a4f4f ; "ZOO"
DOS Add zoo a: %a %f
DOS Extract zoo e:O %a %f
DOS View zoo v %a
DOS End Archiver
Complete example 5 (it's a DOS executable, to be used under
DOS or OS/2 indifferently):
Archiver ZOO
Extension ZOO
Ident 0,5a4f4f ; "ZOO"
Add zoo a: %a %f
Extract zoo e:O %a %f
View zoo v %a
End Archiver
T R O U B L E S H O O T I N G
Extraction problem
Problem:
FastLst does not extract the correct
nodelist/nodediff.
Solution:
Perhaps there is some nodelist/nodediff with corrupted
file date. Check your "ArcPath", manually extract to
the "InputPath" the required nodelist/nodediff and
delete the archive (or reset its file-date so that it
is similar to that of the enclosed file). FastLst will
automatically rearchive the nodelist/nodediff if you
use "ArcMethod"/"ArcDiffMethod", otherwise you can
rearchive manually.
Out of Memory
Problem:
FastLst runs out of memory (Dos versions).
Solution:
- give more DPMI memory to FastLst
- enable the DOS4GW virtual memory mode, using the
DOS4GVM environment variable (e.g. for 16MB virtual
allocation size: SET DOS4GVM=VirtualSize#16384).
This works under real Dos only: if you are using
OS/2 dos sessions, use a higher DPMI_MEMORY_LIMIT in
the Dos settings.
Problems with Empty Phone entries
Problem:
Some program behaves oddly while accessing entries
that contain an empty phone number.
Solution:
The problem might be caused by the cost that is
assigned to empty-phone nodes (65535 by default).
Try using the "CostNullPhone" global statement to give
lower costs.
Example:
CostNullPhone 900 0
Slow processing
Problem:
FastLst works very slowly.
Solution:
Perhaps you are compiling a large nodelist or set of
nodelists on a system with few MegaBytes of free
physical RAM, so that the OS needs to extensively use
virtual memory. Try using the "LinkOnDisk" statement
in the configuration file.
System performance degradation
Problem:
FastLst loads the system excessively, so that other
OS/2 tasks don't perform properly (OS/2 version).
Solution:
Use the "Priority Idle" statement in the configuration
file, so that FastLst receives its time slices only
when other processes with higher priority are idle.
I want maximum speed
Problem:
I run FastLst while the communications are off, so I
would like it to run as fast as possible even if it is
in the background and other tasks are active (OS/2
version).
Solution:
Use the "Priority High 31" statement in the
configuration file, so that FastLst receives the
maximum priority for "non time-critical" processes.
Archived Diffs are not applied
Problem:
FastLst does not apply the archived Diffs.
Solution:
Remember that "InputPath <path>" is the default path
for lists and diffs, while "ArcPath <path>" is the one
for archives.
Please compare your Compress.cfg with the example one,
check the paths and try the commands manually.
Check the day-extensions and time-stamps of the
relevant files.
Dos/32 DOS4GW exception
Problem:
The Dos/32 version of FastLst aborts with an exception
from the Dos extender.
Solution:
Try booting with a "clean" config.sys and autoexec.bat
(the Dos extender might be incompatible with some of
your loaded drivers or TSRs.
Dial Scripts and VMODEM addresses
Problem:
How can I put script names or internet addresses in
the place of a phone number ?
Solution:
You may use the "Phone" statement.
Example:
Let's suppose the following Modem Type table is
defined:
TypeDef
X75 1
V34 2
VM 3
End
You may use a Phone override of this kind:
Phone 2:345/678 domain.com VM,CM 10 0
And a ModemTrans (for Binkley's VMODEM line):
ModemTrans 0
ModemTrans 1
ModemTrans 2
ModemTrans 3 ATDT# ; Vmodem
Region and zone-level Export
Problem:
How can I export a Region segment together with the
zone-level entries ?
Solution:
The zone level entries have the Region/Net field equal
to the zone number; you can use the Export statement
in the following way:
export MyR33.??? 1:1 2:2 2:33 3:3 4:4 5:5 6:6
Support ?
Problem:
I cannot find the solution to my problems.
Solution:
- Try linking the APWORKS support echo
- Try asking your local supporter
- Try asking the author directly
You can find the addresses in the ReadMe.1st file.
S H A R E W A R E
If you like this program and continue using it, you should pay
the author for his work, as per the ShareWare concept of
distribution.
Please see LICENSE.DOC and REGISTER.DOC for information.
Thank you for your interest in FastLst.